library(flowCore) #for reading and manipulating flow data
library(ggcyto) #for using ggplot with flow data
## Loading required package: ggplot2
## Loading required package: ncdfFlow
## Loading required package: RcppArmadillo
## Loading required package: BH
## Loading required package: flowWorkspace
library(scales) #for nice plot axes
library(cowplot) #for multi panel plots
##
## ********************************************************
## Note: As of version 1.0.0, cowplot does not change the
## default ggplot2 theme anymore. To recover the previous
## behavior, execute:
## theme_set(theme_cowplot())
## ********************************************************
library(Phenoflow) #for rarefying
## Loading required package: flowClean
## Loading required package: flowFDA
## Loading required package: flowViz
## Loading required package: lattice
## Loading required package: flowFP
## Loading required package: multcomp
## Loading required package: mvtnorm
## Loading required package: survival
## Loading required package: TH.data
## Loading required package: MASS
##
## Attaching package: 'TH.data'
## The following object is masked from 'package:MASS':
##
## geyser
## Loading required package: mclust
## Package 'mclust' version 5.4.5
## Type 'citation("mclust")' for citing this R package in publications.
##
## Attaching package: 'mclust'
## The following object is masked from 'package:mvtnorm':
##
## dmvnorm
##
## Attaching package: 'flowFDA'
## The following object is masked from 'package:mclust':
##
## print.Mclust
## Loading required package: flowAI
## Loading required package: foreach
library(tidyverse) #for data wrangling and plotting
## ── Attaching packages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✔ tibble 2.1.3 ✔ dplyr 0.8.5
## ✔ tidyr 1.0.2 ✔ stringr 1.4.0
## ✔ readr 1.3.1 ✔ forcats 0.5.0
## ✔ purrr 0.3.3
## ── Conflicts ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ ggcyto::%+%() masks ggplot2::%+%()
## ✖ purrr::accumulate() masks foreach::accumulate()
## ✖ readr::col_factor() masks scales::col_factor()
## ✖ purrr::discard() masks scales::discard()
## ✖ dplyr::filter() masks ncdfFlow::filter(), flowCore::filter(), stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ purrr::map() masks mclust::map()
## ✖ dplyr::select() masks MASS::select()
## ✖ purrr::when() masks foreach::when()
#for geom_jitter reproducibility
set.seed=100
(fs = read.flowSet(path="data_fcs"))
## A flowSet with 100 experiments.
##
## column names:
## 530/30 Blue B-A 610/20 YG C-A FSC-A FSC-H FSC-W SSC-A SSC-H SSC-W Time
colnames(fs)
## [1] "530/30 Blue B-A" "610/20 YG C-A" "FSC-A" "FSC-H"
## [5] "FSC-W" "SSC-A" "SSC-H" "SSC-W"
## [9] "Time"
pData(phenoData(fs))
#read in sample names and merge
metadata = read_tsv("metadata.tsv") %>%
rename(name=Filename) %>%
mutate(Mouse = paste("Mouse", Mouse)) %>%
mutate(Day = paste("Day", Timepoint)) %>%
mutate(Treatment_Mouse = paste0(Treatment, "\n", Mouse)) %>%
mutate(Mouse_Treatment = paste0(Mouse, " (", Treatment, ")"))
## Parsed with column specification:
## cols(
## FlowSampleNumber = col_double(),
## `Mouse Sample Number` = col_double(),
## Experiment = col_character(),
## Treatment = col_character(),
## Timepoint = col_double(),
## Mouse = col_double(),
## Filename = col_character()
## )
metadata$Mouse = factor(metadata$Mouse, levels= unique(metadata$Mouse))
metadata$Treatment_Mouse = factor(metadata$Treatment_Mouse, levels=unique(metadata$Treatment_Mouse))
metadata$Mouse_Treatment = factor(metadata$Mouse_Treatment, levels=unique(metadata$Mouse_Treatment))
metadata$Treatment = factor(metadata$Treatment, levels=unique(metadata$Treatment))
metadata$Day = factor(metadata$Day, levels=unique(metadata$Day))
metadata
#add columns to phenoData
phenoData(fs)$Order = seq(1, length(phenoData(fs)$name))
phenoData(fs)$Treatment = metadata$Treatment
phenoData(fs)$Timepoint = metadata$Timepoint
phenoData(fs)$Day = metadata$Day
phenoData(fs)$Name = metadata$name
phenoData(fs)$Mouse = metadata$Mouse
phenoData(fs)$Treatment_Mouse = metadata$Treatment_Mouse
phenoData(fs)$Mouse_Treatment = metadata$Mouse_Treatment
pData(phenoData(fs))
#make labeller function for facet_wrap
order = as.character(phenoData(fs)$Order)
name = phenoData(fs)$Name
order_names = mapply(c, order, name, SIMPLIFY = FALSE) #make a one-to-one
order_names = lapply(order_names, `[[`, 2) #keep second element of each vector in the list
order_names = order_names[as.character(sort(as.numeric(names(order_names))))] #numerically sort
order_labeller = function(variable,value){
return(order_names[value])
}
scatter = rbind(c(0, 1e4),
c(1e5, 1e4),
c(1e5, 2.5e5),
c(0, 2.5e5))
colnames(scatter)=c("FSC-A", "SSC-A")
scatter = as.data.frame(scatter)
ggplot() +
geom_point(data=fs, aes(x=`FSC-A`, y=`SSC-A`), shape=16, size=0.75, alpha=0.5) +
scale_y_continuous(name="SSC-A (Granularity)\n", limits = c(-2e1,3e5)) +
scale_x_continuous(name="\nFSC-A (Size)", limit=c(-2e1,3e5)) +
facet_grid(Mouse~Timepoint) +
theme_linedraw(14) +
theme(panel.grid = element_blank(), axis.text.x=element_text(angle=90,hjust=1)) +
geom_polygon(data=scatter, aes(x=`FSC-A`, y=`SSC-A`), fill=NA, colour="indianred", size=0.5, linetype="solid")
## Warning: Removed 5093378 rows containing missing values (geom_point).
gate_scatter = polygonGate(filterId="scatter", `FSC-A` = scatter$`FSC-A`, `SSC-A` = scatter$`SSC-A`)
result = flowCore::filter(fs, gate_scatter)
events = flowCore::Subset(fs, result)
events = Phenoflow::FCS_resample(events, replace = FALSE, rarefy = FALSE, progress = TRUE)
## Your samples range between 30216 and 112724 cells
## Your samples were randomly subsampled to 30216 cells
red = rbind(
c(-1e3, 4e3),
c(-1e3, 4e5),
c( 4000, 4e5),
c( 1000, 4e3))
colnames(red)=c("530/30 Blue B-A", "610/20 YG C-A")
red = as.data.frame(red)
yellow = rbind(
c(3e3, 3e3),
c(9e2, 2e3),
c(5e3, 4e5),
c(1e5, 4e5),
c(1e5, 4e4))
colnames(yellow)=c("530/30 Blue B-A", "610/20 YG C-A")
yellow = as.data.frame(yellow)
#check polygons
ggplot() +
geom_polygon(data=yellow, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), fill=NA, colour="goldenrod4", size=0.5, linetype="solid") +
geom_polygon(data=red, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), fill=NA, colour="red3", size=0.5, linetype="solid") +
theme_linedraw(12) +
scale_y_logicle(name="mCherry intensity\n", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 4e5)) +
scale_x_logicle(name="\nGFP intensity", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1e3, 1.5e5)) +
theme(panel.grid = element_blank(),
axis.title.x = element_text(colour="green4"),
axis.title.y = element_text(colour="red3"))
ggplot() +
geom_polygon(data=yellow, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), fill=NA, colour="gold4", size=0.5, linetype="solid") +
geom_polygon(data=red, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), fill=NA, colour="red3", size=0.5, linetype="solid") +
geom_point(data=events, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2) +
theme_linedraw(12) +
scale_y_logicle(name="mCherry intensity\n", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 4e5)) +
scale_x_logicle(name="\nGFP intensity", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 1.5e5)) +
theme(panel.grid = element_blank(),
axis.title.x = element_text(colour="green4"),
axis.title.y = element_text(colour="red3")) +
facet_grid(Mouse~Timepoint)
## Warning: Removed 233 rows containing missing values (geom_point).
gate_yellow = polygonGate(filterId="yellow", `530/30 Blue B-A` = yellow$`530/30 Blue B-A`, `610/20 YG C-A` = yellow$`610/20 YG C-A`)
result_yellow = flowCore::filter(events, gate_yellow)
events_yellow = Subset(events, result_yellow)
gate_red = polygonGate(filterId="red", `530/30 Blue B-A` = red$`530/30 Blue B-A`, `610/20 YG C-A` = red$`610/20 YG C-A`)
result_red = flowCore::filter(events, gate_red)
events_red = Subset(events, result_red)
percent_red = toTable(summary(result_red)) %>%
mutate(x = 2e5, y = 0, colour="red", order=phenoData(events)$order) %>%
rename(name=sample) %>%
left_join(metadata, by="name")
## filter summary for frame 'Specimen_001_Sample_001_001.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_002_002.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_003_003.fcs'
## red+: 1 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_004_004.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_005_005.fcs'
## red+: 2 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_006_006.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_007_007.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_008_008.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_009_009.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_010_010.fcs'
## red+: 4 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_011_011.fcs'
## red+: 2 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_012_012.fcs'
## red+: 2 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_013_013.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_014_014.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_015_015.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_016_016.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_017_017.fcs'
## red+: 1 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_018_018.fcs'
## red+: 4 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_019_019.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_020_020.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_021_021.fcs'
## red+: 2 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_022_022.fcs'
## red+: 1 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_023_023.fcs'
## red+: 6 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_024_024.fcs'
## red+: 13 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_025_025.fcs'
## red+: 2 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_026_026.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_027_027.fcs'
## red+: 4 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_028_028.fcs'
## red+: 128 of 30216 events (0.42%)
##
## filter summary for frame 'Specimen_001_Sample_029_029.fcs'
## red+: 4 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_030_030.fcs'
## red+: 15 of 30216 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_031_031.fcs'
## red+: 6 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_032_032.fcs'
## red+: 6 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_033_033.fcs'
## red+: 13 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_034_034.fcs'
## red+: 9 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_035_035.fcs'
## red+: 13 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_036_036.fcs'
## red+: 19 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_037_037.fcs'
## red+: 8 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_038_038.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_039_039.fcs'
## red+: 2 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_040_040.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_041_041.fcs'
## red+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_042_042.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_043_043.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_044_044.fcs'
## red+: 12 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_045_045.fcs'
## red+: 49 of 30216 events (0.16%)
##
## filter summary for frame 'Specimen_001_Sample_046_046.fcs'
## red+: 5 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_047_047.fcs'
## red+: 14 of 30216 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_048_048.fcs'
## red+: 11 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_049_049.fcs'
## red+: 34 of 30216 events (0.11%)
##
## filter summary for frame 'Specimen_001_Sample_050_050.fcs'
## red+: 15 of 30216 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_051_051.fcs'
## red+: 101 of 30216 events (0.33%)
##
## filter summary for frame 'Specimen_001_Sample_052_052.fcs'
## red+: 9 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_053_053.fcs'
## red+: 3484 of 30216 events (11.53%)
##
## filter summary for frame 'Specimen_001_Sample_054_054.fcs'
## red+: 3668 of 30216 events (12.14%)
##
## filter summary for frame 'Specimen_001_Sample_055_055.fcs'
## red+: 18 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_056_056.fcs'
## red+: 45 of 30216 events (0.15%)
##
## filter summary for frame 'Specimen_001_Sample_057_057.fcs'
## red+: 17 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_058_058.fcs'
## red+: 3285 of 30216 events (10.87%)
##
## filter summary for frame 'Specimen_001_Sample_059_059.fcs'
## red+: 25 of 30216 events (0.08%)
##
## filter summary for frame 'Specimen_001_Sample_060_060.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_061_061.fcs'
## red+: 11 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_062_062.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_063_063.fcs'
## red+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_064_064.fcs'
## red+: 29 of 30216 events (0.10%)
##
## filter summary for frame 'Specimen_001_Sample_065_065.fcs'
## red+: 42 of 30216 events (0.14%)
##
## filter summary for frame 'Specimen_001_Sample_066_066.fcs'
## red+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_067_067.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_068_068.fcs'
## red+: 16 of 30216 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_069_069.fcs'
## red+: 11 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_070_070.fcs'
## red+: 99 of 30216 events (0.33%)
##
## filter summary for frame 'Specimen_001_Sample_071_071.fcs'
## red+: 6 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_072_072.fcs'
## red+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_073_073.fcs'
## red+: 8239 of 30216 events (27.27%)
##
## filter summary for frame 'Specimen_001_Sample_074_074.fcs'
## red+: 2425 of 30216 events (8.03%)
##
## filter summary for frame 'Specimen_001_Sample_075_075.fcs'
## red+: 19 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_076_076.fcs'
## red+: 41 of 30216 events (0.14%)
##
## filter summary for frame 'Specimen_001_Sample_077_077.fcs'
## red+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_078_078.fcs'
## red+: 9688 of 30216 events (32.06%)
##
## filter summary for frame 'Specimen_001_Sample_079_079.fcs'
## red+: 9 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_080_080.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_081_081.fcs'
## red+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_082_082.fcs'
## red+: 19 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_083_083.fcs'
## red+: 9 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_084_084.fcs'
## red+: 17 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_085_085.fcs'
## red+: 14 of 30216 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_086_086.fcs'
## red+: 1 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_087_087.fcs'
## red+: 6 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_088_088.fcs'
## red+: 1 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_089_089.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_090_090.fcs'
## red+: 51 of 30216 events (0.17%)
##
## filter summary for frame 'Specimen_001_Sample_091_091.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_092_092.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_093_093.fcs'
## red+: 779 of 30216 events (2.58%)
##
## filter summary for frame 'Specimen_001_Sample_094_094.fcs'
## red+: 203 of 30216 events (0.67%)
##
## filter summary for frame 'Specimen_001_Sample_095_095.fcs'
## red+: 0 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_096_096.fcs'
## red+: 16 of 30216 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_097_097.fcs'
## red+: 10 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_098_098.fcs'
## red+: 531 of 30216 events (1.76%)
##
## filter summary for frame 'Specimen_001_Sample_099_099.fcs'
## red+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_100_100.fcs'
## red+: 8 of 30216 events (0.03%)
## Warning: Column `name` joining factor and character vector, coercing into
## character vector
percent_yellow = toTable(summary(result_yellow)) %>%
mutate(x = 2e5, y = -5e2, colour="yellow", order=phenoData(events)$order) %>%
rename(name=sample) %>%
left_join(metadata, by="name")
## filter summary for frame 'Specimen_001_Sample_001_001.fcs'
## yellow+: 11 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_002_002.fcs'
## yellow+: 5 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_003_003.fcs'
## yellow+: 12 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_004_004.fcs'
## yellow+: 27 of 30216 events (0.09%)
##
## filter summary for frame 'Specimen_001_Sample_005_005.fcs'
## yellow+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_006_006.fcs'
## yellow+: 4 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_007_007.fcs'
## yellow+: 1 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_008_008.fcs'
## yellow+: 4 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_009_009.fcs'
## yellow+: 7 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_010_010.fcs'
## yellow+: 28 of 30216 events (0.09%)
##
## filter summary for frame 'Specimen_001_Sample_011_011.fcs'
## yellow+: 18 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_012_012.fcs'
## yellow+: 17 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_013_013.fcs'
## yellow+: 12 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_014_014.fcs'
## yellow+: 3 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_015_015.fcs'
## yellow+: 8 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_016_016.fcs'
## yellow+: 37 of 30216 events (0.12%)
##
## filter summary for frame 'Specimen_001_Sample_017_017.fcs'
## yellow+: 9 of 30216 events (0.03%)
##
## filter summary for frame 'Specimen_001_Sample_018_018.fcs'
## yellow+: 14 of 30216 events (0.05%)
##
## filter summary for frame 'Specimen_001_Sample_019_019.fcs'
## yellow+: 1 of 30216 events (0.00%)
##
## filter summary for frame 'Specimen_001_Sample_020_020.fcs'
## yellow+: 2 of 30216 events (0.01%)
##
## filter summary for frame 'Specimen_001_Sample_021_021.fcs'
## yellow+: 615 of 30216 events (2.04%)
##
## filter summary for frame 'Specimen_001_Sample_022_022.fcs'
## yellow+: 231 of 30216 events (0.76%)
##
## filter summary for frame 'Specimen_001_Sample_023_023.fcs'
## yellow+: 262 of 30216 events (0.87%)
##
## filter summary for frame 'Specimen_001_Sample_024_024.fcs'
## yellow+: 3652 of 30216 events (12.09%)
##
## filter summary for frame 'Specimen_001_Sample_025_025.fcs'
## yellow+: 732 of 30216 events (2.42%)
##
## filter summary for frame 'Specimen_001_Sample_026_026.fcs'
## yellow+: 624 of 30216 events (2.07%)
##
## filter summary for frame 'Specimen_001_Sample_027_027.fcs'
## yellow+: 5087 of 30216 events (16.84%)
##
## filter summary for frame 'Specimen_001_Sample_028_028.fcs'
## yellow+: 34 of 30216 events (0.11%)
##
## filter summary for frame 'Specimen_001_Sample_029_029.fcs'
## yellow+: 1493 of 30216 events (4.94%)
##
## filter summary for frame 'Specimen_001_Sample_030_030.fcs'
## yellow+: 2140 of 30216 events (7.08%)
##
## filter summary for frame 'Specimen_001_Sample_031_031.fcs'
## yellow+: 2302 of 30216 events (7.62%)
##
## filter summary for frame 'Specimen_001_Sample_032_032.fcs'
## yellow+: 470 of 30216 events (1.56%)
##
## filter summary for frame 'Specimen_001_Sample_033_033.fcs'
## yellow+: 6301 of 30216 events (20.85%)
##
## filter summary for frame 'Specimen_001_Sample_034_034.fcs'
## yellow+: 787 of 30216 events (2.60%)
##
## filter summary for frame 'Specimen_001_Sample_035_035.fcs'
## yellow+: 1626 of 30216 events (5.38%)
##
## filter summary for frame 'Specimen_001_Sample_036_036.fcs'
## yellow+: 531 of 30216 events (1.76%)
##
## filter summary for frame 'Specimen_001_Sample_037_037.fcs'
## yellow+: 1976 of 30216 events (6.54%)
##
## filter summary for frame 'Specimen_001_Sample_038_038.fcs'
## yellow+: 626 of 30216 events (2.07%)
##
## filter summary for frame 'Specimen_001_Sample_039_039.fcs'
## yellow+: 435 of 30216 events (1.44%)
##
## filter summary for frame 'Specimen_001_Sample_040_040.fcs'
## yellow+: 270 of 30216 events (0.89%)
##
## filter summary for frame 'Specimen_001_Sample_041_041.fcs'
## yellow+: 9175 of 30216 events (30.36%)
##
## filter summary for frame 'Specimen_001_Sample_042_042.fcs'
## yellow+: 13 of 30216 events (0.04%)
##
## filter summary for frame 'Specimen_001_Sample_043_043.fcs'
## yellow+: 68 of 30216 events (0.23%)
##
## filter summary for frame 'Specimen_001_Sample_044_044.fcs'
## yellow+: 4300 of 30216 events (14.23%)
##
## filter summary for frame 'Specimen_001_Sample_045_045.fcs'
## yellow+: 13077 of 30216 events (43.28%)
##
## filter summary for frame 'Specimen_001_Sample_046_046.fcs'
## yellow+: 6248 of 30216 events (20.68%)
##
## filter summary for frame 'Specimen_001_Sample_047_047.fcs'
## yellow+: 7646 of 30216 events (25.30%)
##
## filter summary for frame 'Specimen_001_Sample_048_048.fcs'
## yellow+: 5546 of 30216 events (18.35%)
##
## filter summary for frame 'Specimen_001_Sample_049_049.fcs'
## yellow+: 6467 of 30216 events (21.40%)
##
## filter summary for frame 'Specimen_001_Sample_050_050.fcs'
## yellow+: 4227 of 30216 events (13.99%)
##
## filter summary for frame 'Specimen_001_Sample_051_051.fcs'
## yellow+: 10397 of 30216 events (34.41%)
##
## filter summary for frame 'Specimen_001_Sample_052_052.fcs'
## yellow+: 155 of 30216 events (0.51%)
##
## filter summary for frame 'Specimen_001_Sample_053_053.fcs'
## yellow+: 958 of 30216 events (3.17%)
##
## filter summary for frame 'Specimen_001_Sample_054_054.fcs'
## yellow+: 3490 of 30216 events (11.55%)
##
## filter summary for frame 'Specimen_001_Sample_055_055.fcs'
## yellow+: 33 of 30216 events (0.11%)
##
## filter summary for frame 'Specimen_001_Sample_056_056.fcs'
## yellow+: 10465 of 30216 events (34.63%)
##
## filter summary for frame 'Specimen_001_Sample_057_057.fcs'
## yellow+: 162 of 30216 events (0.54%)
##
## filter summary for frame 'Specimen_001_Sample_058_058.fcs'
## yellow+: 1886 of 30216 events (6.24%)
##
## filter summary for frame 'Specimen_001_Sample_059_059.fcs'
## yellow+: 29 of 30216 events (0.10%)
##
## filter summary for frame 'Specimen_001_Sample_060_060.fcs'
## yellow+: 463 of 30216 events (1.53%)
##
## filter summary for frame 'Specimen_001_Sample_061_061.fcs'
## yellow+: 7088 of 30216 events (23.46%)
##
## filter summary for frame 'Specimen_001_Sample_062_062.fcs'
## yellow+: 49 of 30216 events (0.16%)
##
## filter summary for frame 'Specimen_001_Sample_063_063.fcs'
## yellow+: 59 of 30216 events (0.20%)
##
## filter summary for frame 'Specimen_001_Sample_064_064.fcs'
## yellow+: 4262 of 30216 events (14.11%)
##
## filter summary for frame 'Specimen_001_Sample_065_065.fcs'
## yellow+: 4856 of 30216 events (16.07%)
##
## filter summary for frame 'Specimen_001_Sample_066_066.fcs'
## yellow+: 7234 of 30216 events (23.94%)
##
## filter summary for frame 'Specimen_001_Sample_067_067.fcs'
## yellow+: 5901 of 30216 events (19.53%)
##
## filter summary for frame 'Specimen_001_Sample_068_068.fcs'
## yellow+: 14239 of 30216 events (47.12%)
##
## filter summary for frame 'Specimen_001_Sample_069_069.fcs'
## yellow+: 72 of 30216 events (0.24%)
##
## filter summary for frame 'Specimen_001_Sample_070_070.fcs'
## yellow+: 7204 of 30216 events (23.84%)
##
## filter summary for frame 'Specimen_001_Sample_071_071.fcs'
## yellow+: 2826 of 30216 events (9.35%)
##
## filter summary for frame 'Specimen_001_Sample_072_072.fcs'
## yellow+: 56 of 30216 events (0.19%)
##
## filter summary for frame 'Specimen_001_Sample_073_073.fcs'
## yellow+: 3665 of 30216 events (12.13%)
##
## filter summary for frame 'Specimen_001_Sample_074_074.fcs'
## yellow+: 3699 of 30216 events (12.24%)
##
## filter summary for frame 'Specimen_001_Sample_075_075.fcs'
## yellow+: 68 of 30216 events (0.23%)
##
## filter summary for frame 'Specimen_001_Sample_076_076.fcs'
## yellow+: 9522 of 30216 events (31.51%)
##
## filter summary for frame 'Specimen_001_Sample_077_077.fcs'
## yellow+: 63 of 30216 events (0.21%)
##
## filter summary for frame 'Specimen_001_Sample_078_078.fcs'
## yellow+: 1775 of 30216 events (5.87%)
##
## filter summary for frame 'Specimen_001_Sample_079_079.fcs'
## yellow+: 18 of 30216 events (0.06%)
##
## filter summary for frame 'Specimen_001_Sample_080_080.fcs'
## yellow+: 46 of 30216 events (0.15%)
##
## filter summary for frame 'Specimen_001_Sample_081_081.fcs'
## yellow+: 3732 of 30216 events (12.35%)
##
## filter summary for frame 'Specimen_001_Sample_082_082.fcs'
## yellow+: 6476 of 30216 events (21.43%)
##
## filter summary for frame 'Specimen_001_Sample_083_083.fcs'
## yellow+: 38 of 30216 events (0.13%)
##
## filter summary for frame 'Specimen_001_Sample_084_084.fcs'
## yellow+: 399 of 30216 events (1.32%)
##
## filter summary for frame 'Specimen_001_Sample_085_085.fcs'
## yellow+: 1034 of 30216 events (3.42%)
##
## filter summary for frame 'Specimen_001_Sample_086_086.fcs'
## yellow+: 615 of 30216 events (2.04%)
##
## filter summary for frame 'Specimen_001_Sample_087_087.fcs'
## yellow+: 1808 of 30216 events (5.98%)
##
## filter summary for frame 'Specimen_001_Sample_088_088.fcs'
## yellow+: 266 of 30216 events (0.88%)
##
## filter summary for frame 'Specimen_001_Sample_089_089.fcs'
## yellow+: 20 of 30216 events (0.07%)
##
## filter summary for frame 'Specimen_001_Sample_090_090.fcs'
## yellow+: 1500 of 30216 events (4.96%)
##
## filter summary for frame 'Specimen_001_Sample_091_091.fcs'
## yellow+: 355 of 30216 events (1.17%)
##
## filter summary for frame 'Specimen_001_Sample_092_092.fcs'
## yellow+: 307 of 30216 events (1.02%)
##
## filter summary for frame 'Specimen_001_Sample_093_093.fcs'
## yellow+: 45 of 30216 events (0.15%)
##
## filter summary for frame 'Specimen_001_Sample_094_094.fcs'
## yellow+: 1431 of 30216 events (4.74%)
##
## filter summary for frame 'Specimen_001_Sample_095_095.fcs'
## yellow+: 6 of 30216 events (0.02%)
##
## filter summary for frame 'Specimen_001_Sample_096_096.fcs'
## yellow+: 1821 of 30216 events (6.03%)
##
## filter summary for frame 'Specimen_001_Sample_097_097.fcs'
## yellow+: 510 of 30216 events (1.69%)
##
## filter summary for frame 'Specimen_001_Sample_098_098.fcs'
## yellow+: 571 of 30216 events (1.89%)
##
## filter summary for frame 'Specimen_001_Sample_099_099.fcs'
## yellow+: 1048 of 30216 events (3.47%)
##
## filter summary for frame 'Specimen_001_Sample_100_100.fcs'
## yellow+: 43 of 30216 events (0.14%)
## Warning: Column `name` joining factor and character vector, coercing into
## character vector
percentage = bind_rows(percent_red, percent_yellow) %>%
group_by(name) %>%
mutate(total_yellow_mcherry = sum(true)) %>%
mutate(fraction_fluor = round(true/total_yellow_mcherry, 3)) %>%
mutate(percent_fluor = fraction_fluor*100) %>%
mutate(label = paste(true, "events"))
## Warning in bind_rows_(x, .id): Unequal factor levels: coercing to character
## Warning in bind_rows_(x, .id): binding character and factor vector, coercing
## into character vector
## Warning in bind_rows_(x, .id): binding character and factor vector, coercing
## into character vector
ggplot() +
geom_point(data=events, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="black") +
geom_point(data=events_yellow, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="goldenrod") +
geom_point(data=events_red, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="red3") +
geom_text(data=percentage, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage, aes(x=1e5, y=1.5e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("red3", "goldenrod4")) +
scale_y_logicle(name="mCherry intensity\n", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 4e5)) +
scale_x_logicle(name="\nGFP intensity", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 2e5)) +
theme_linedraw(12) +
theme(panel.grid = element_blank(),
legend.position = "none") +
facet_grid(Mouse_Treatment~Day)
## Warning: Removed 196 rows containing missing values (geom_point).
ggsave("figures/exp19_yellow_red_scatterplot.png", width=12, height=40, dpi=150)
## Warning: Removed 196 rows containing missing values (geom_point).
samples = metadata %>%
filter(Treatment == "NT") %>%
pull(FlowSampleNumber)
percentage_samples = percentage %>%
filter(FlowSampleNumber %in% samples)
ggplot() +
geom_point(data=events[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="black") +
geom_point(data=events_yellow[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="goldenrod") +
geom_point(data=events_red[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="red3") +
geom_text(data=percentage_samples, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage_samples, aes(x=1e5, y=1.5e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("red3", "goldenrod4")) +
scale_y_logicle(name="mCherry intensity\n", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 4e5)) +
scale_x_logicle(name="\nGFP intensity", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 2e5)) +
theme_linedraw(12) +
theme(panel.grid = element_blank(),
legend.position = "none") +
facet_grid(Mouse_Treatment~Day)
## Warning: Removed 171 rows containing missing values (geom_point).
ggsave("figures/exp19_yellow_red_scatterplot_NT.png", width=12, height=20, dpi=150)
## Warning: Removed 171 rows containing missing values (geom_point).
samples = metadata %>%
filter(Treatment == "GFPT") %>%
pull(FlowSampleNumber)
percentage_samples = percentage %>%
filter(FlowSampleNumber %in% samples)
ggplot() +
geom_point(data=events[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="black") +
geom_point(data=events_yellow[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="goldenrod") +
geom_point(data=events_red[samples], aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.5, alpha=0.2, colour="red3") +
geom_text(data=percentage_samples, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage_samples, aes(x=1e5, y=1.5e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("red3", "goldenrod4")) +
scale_y_logicle(name="mCherry intensity\n", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 4e5)) +
scale_x_logicle(name="\nGFP intensity", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 2e5)) +
theme_linedraw(12) +
theme(panel.grid = element_blank(),
legend.position = "none") +
facet_grid(Mouse_Treatment~Day)
## Warning: Removed 25 rows containing missing values (geom_point).
ggsave("figures/exp19_yellow_red_scatterplot_GFPT.png", width=12, height=20, dpi=150)
## Warning: Removed 25 rows containing missing values (geom_point).
samples=c(4, 24, 44, 64, 84, 13, 33, 53, 73, 93)
events_M4_M13 = events[samples]
events_red_M4_M13 = events_red[samples]
events_yellow_M4_M13 = events_yellow[samples]
percentage_M4_M13 = percentage %>%
filter(Mouse == "Mouse 4" | Mouse == "Mouse 13")
ggplot() +
geom_point(data=events_M4_M13, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.75, alpha=0.2, colour="black") +
geom_point(data=events_yellow_M4_M13, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.75, alpha=0.2, colour="goldenrod") +
geom_point(data=events_red_M4_M13, aes(x=`530/30 Blue B-A`, y=`610/20 YG C-A`), shape=16, size=0.75, alpha=0.2, colour="red3") +
geom_text(data=percentage_M4_M13, aes(x=x, y=y, label=label, colour=colour), size=3, hjust=1) +
geom_text(data=percentage_M4_M13, aes(x=1e5, y=1.5e5, label=paste0(count, " events total")), colour="grey27", size=3, hjust=1) +
scale_colour_manual(values=c("red3", "goldenrod4")) +
scale_y_logicle(name="mCherry intensity", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 4e5)) +
scale_x_logicle(name="GFP intensity", t=10000, m=3, w=1, breaks=c(0, 1e3,1e4,1e5), limits=c(-1.5e3, 2e5)) +
theme_linedraw(14) +
theme(panel.grid = element_blank(),
axis.title.x = element_text(colour="black"),
axis.title.y = element_text(colour="black"),
legend.position = "none",
panel.border=element_rect(size=1)) +
facet_grid(Treatment_Mouse~Day)
## Warning: Removed 1 rows containing missing values (geom_point).
ggsave("figures/exp19_yellow_red_scatterplot_M4_M13.png", width=12, height=5, dpi=300, device="png")
## Warning: Removed 1 rows containing missing values (geom_point).
#find highest background yellow before E. coli introduced (Day -5)
bg_yellow_high = percentage %>%
dplyr::filter(Timepoint == -5, population == "yellow+") %>%
pull(true) %>%
max()
#find highest background red for all NT samples at all timespoints
bg_red_high = percentage %>%
dplyr::filter(Treatment=="NT", population == "red+") %>%
pull(true) %>%
max()
#set background for yellow (Day -5) and red (Day 0) based on each mouse
percentage = percentage %>%
group_by(Mouse, population) %>%
mutate(bg = case_when(population=="yellow+" ~ true[which(Timepoint == -5)],
population=="red+" ~ true[which(Timepoint == 0)])) %>%
ungroup() %>%
mutate(positive_events_minusbg = true - bg)
#set all negative values or 0 values to one
percentage = percentage %>%
mutate(positive_events_minusbg_nozeros = as.double(positive_events_minusbg)) %>%
mutate(positive_events_minusbg_nozeros = case_when(positive_events_minusbg_nozeros <= 0 ~ 1,
positive_events_minusbg_nozeros > 0 ~ positive_events_minusbg_nozeros))
#remove Mouse 8 T=2 based on scatterplot
percentage = percentage %>% filter(!(Mouse == "Mouse 8" & Day == "Day 0"))
ggplot(percentage) +
annotate("rect", xmin=0.25, xmax=7.25, ymin=0, ymax=Inf, fill="honeydew2", colour=NA, alpha=0.75) +
geom_line(aes(x=Timepoint, y=positive_events_minusbg_nozeros, group=interaction(Mouse, population), colour=population), size=0.5) +
geom_point(aes(x=Timepoint, y=positive_events_minusbg_nozeros, group=interaction(Mouse, population), colour=population), size=2) +
scale_colour_manual(values=c("red3", "goldenrod3"), labels=c("mCherry+", "GFP+ mCherry+")) +
scale_y_log10(name="Positive events / Total events", labels = trans_format("log10", math_format(10^.x))) +
scale_x_continuous(name="Day", breaks=seq(-4,15,2)) +
theme_linedraw(12) +
theme(legend.position = "top",
panel.grid.minor.y=element_blank(), panel.grid.major.y=element_blank(),
panel.grid.minor.x=element_blank(), panel.grid.major.x = element_blank(),
panel.border=element_rect(size=1.5)) +
annotation_logticks(sides="l") +
facet_wrap(~Mouse_Treatment, nrow=4)
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp19_timecourse_yellow_red_byMouse_unfiltered.png", width=12, height=8)
## Warning: Transformation introduced infinite values in continuous y-axis
#filter out timepoints where red AND yellow are both below the highest background observed for each multipled by a factor
percentage_filtered = percentage %>%
mutate(bg_high = case_when(population == "yellow+" ~ bg_yellow_high, population == "red+" ~ bg_red_high)) %>% #background depending on fluor
mutate(below_background = ifelse(true > bg_high * 3, "no", "yes")) %>% #mark whether above or below threshold
mutate(Mouse_Timepoint = paste(Mouse, Timepoint))
#make new table of mouse+timepoint to filter by
filter_below = percentage_filtered %>%
dplyr::select(Mouse, Timepoint, Mouse_Timepoint, population, bg, below_background) %>%
dplyr::filter(below_background == "yes") %>%
dplyr::filter(Timepoint != -5, Timepoint != 0) %>%
pivot_wider(names_from=population, values_from=bg) %>%
dplyr::filter(is.na(`yellow+`) == FALSE & is.na(`red+`) == FALSE)
`%notin%` <- Negate(`%in%`)
percentage_filtered = percentage_filtered %>%
dplyr::filter(Mouse_Timepoint %notin% filter_below$Mouse_Timepoint)
ggplot(percentage_filtered) +
annotate("rect", xmin=0.25, xmax=7.25, ymin=0, ymax=Inf, fill="honeydew2", colour=NA, alpha=0.75) +
geom_line(aes(x=Timepoint, y=positive_events_minusbg_nozeros, group=interaction(Mouse, population), colour=population), size=0.5) +
geom_point(aes(x=Timepoint, y=positive_events_minusbg_nozeros, group=interaction(Mouse, population), colour=population), size=2) +
scale_colour_manual(values=c("red3", "goldenrod3"), labels=c("mCherry+", "GFP+ mCherry+")) +
scale_y_log10(name="Positive events / Total events", labels = trans_format("log10", math_format(10^.x))) +
scale_x_continuous(name="Day", breaks=seq(-4,15,2)) +
theme_linedraw(12) +
theme(legend.position = "top",
panel.grid.minor.y=element_blank(), panel.grid.major.y=element_blank(),
panel.grid.minor.x=element_blank(), panel.grid.major.x = element_blank(),
panel.border=element_rect(size=1.5)) +
annotation_logticks(sides="l") +
facet_wrap(~Mouse_Treatment, nrow=4)
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp19_timecourse_yellow_red_byMouse.png", height=8, width=12, dpi=150)
## Warning: Transformation introduced infinite values in continuous y-axis
ggsave("figures/exp19_timecourse_yellow_red_byMouse.pdf", height=8, width=12)
## Warning: Transformation introduced infinite values in continuous y-axis
dayfourteen = percentage_filtered %>%
dplyr::filter(Timepoint == 14)
#calculate percent positive yellow/red using background subtracted-positive events (no negatives)
dayfourteen = dayfourteen %>%
mutate(positive_events_minusbg_nonegs = as.double(positive_events_minusbg)) %>%
mutate(positive_events_minusbg_nonegs = case_when(positive_events_minusbg_nonegs <= 0 ~ 0,
positive_events_minusbg_nonegs > 0 ~ positive_events_minusbg_nonegs)) %>%
group_by(Mouse, Timepoint) %>%
mutate(positive_events_minusbg_nonegs_yellow_red_total = sum(positive_events_minusbg_nonegs)) %>%
mutate(positive_events_minusbg_nonegs_percent_fluor = positive_events_minusbg_nonegs / positive_events_minusbg_nonegs_yellow_red_total * 100) %>%
ungroup()
#order mice by red fluor
red_ranked = dayfourteen %>%
filter(population=="red+") %>%
arrange(rev(Treatment), positive_events_minusbg_nonegs_percent_fluor) %>%
pull(Mouse)
dayfourteen$Mouse = factor(dayfourteen$Mouse, levels=red_ranked)
dayfourteen$population = factor(dayfourteen$population, levels=c("yellow+", "red+"))
#calculate background red of NT group to draw line
bg_red_nt = dayfourteen %>%
dplyr::filter(Treatment=="NT" & population=="red+") %>%
pull(positive_events_minusbg_nonegs_percent_fluor) %>%
max()
#make df of labels to plot percentage red value on bar plot
labels = dayfourteen %>%
dplyr::filter(population == "red+") %>%
dplyr::filter(positive_events_minusbg_nonegs_percent_fluor > bg_red_nt) %>%
mutate(labels = paste0(round(positive_events_minusbg_nonegs_percent_fluor, 0), "%"))
ggplot() +
geom_bar(data=dayfourteen, aes(x=Mouse, y=positive_events_minusbg_nonegs_percent_fluor, fill=population), stat = "identity") +
geom_text(data=labels, aes(x=Mouse, y=positive_events_minusbg_nonegs_percent_fluor-4.5, label=labels), colour="white", size=3) +
scale_fill_manual(values = c("darkgoldenrod2","red3"), labels=c("mCherry+ GFP+", "mCherry+ only")) +
geom_hline(yintercept = bg_red_nt, linetype="dashed", size=0.3) +
scale_y_continuous(name="Day 14 Percent GFP+ mCherry+ and mCherry+ events\n(background subtracted)\n",
expand = c(0, 0), position="right", breaks=c(0,25,50,75,100), labels=c(0,25,50,75,100)) +
scale_x_discrete(name = "", position = "top") +
coord_flip() +
theme_linedraw(14) +
theme(legend.position = "bottom", legend.title=element_blank(), panel.grid=element_blank(),
plot.margin=unit(c(5, 8, 5, 15),"mm"),
panel.border = element_rect(size=1.25),
axis.title.x = element_text(size=12)) +
guides(fill = guide_legend(nrow = 1))
ggsave("figures/exp19_percent_yellow_red_barplot.pdf", width=5.5, height=6)
print(sessionInfo())
## R version 3.6.2 (2019-12-12)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 19.10
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.8.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.8.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] forcats_0.5.0 stringr_1.4.0
## [3] dplyr_0.8.5 purrr_0.3.3
## [5] readr_1.3.1 tidyr_1.0.2
## [7] tibble_2.1.3 tidyverse_1.3.0
## [9] Phenoflow_1.1.2 foreach_1.5.0
## [11] flowAI_1.16.0 flowFDA_0.99
## [13] mclust_5.4.5 multcomp_1.4-13
## [15] TH.data_1.0-10 MASS_7.3-51.5
## [17] survival_3.1-12 mvtnorm_1.0-11
## [19] flowFP_1.44.0 flowViz_1.50.0
## [21] lattice_0.20-41 flowClean_1.24.0
## [23] cowplot_1.0.0 scales_1.1.0
## [25] ggcyto_1.14.0 flowWorkspace_3.34.0
## [27] ncdfFlow_2.32.0 BH_1.69.0-1
## [29] RcppArmadillo_0.9.850.1.0 ggplot2_3.2.1
## [31] flowCore_1.52.1
##
## loaded via a namespace (and not attached):
## [1] readxl_1.3.1 changepoint_2.2.2 backports_1.1.5
## [4] plyr_1.8.4 igraph_1.2.5 lazyeval_0.2.2
## [7] splines_3.6.2 digest_0.6.23 htmltools_0.4.0
## [10] magrittr_1.5 cluster_2.1.0 sfsmisc_1.1-6
## [13] recipes_0.1.10 Biostrings_2.54.0 modelr_0.1.6
## [16] gower_0.2.1 RcppParallel_5.0.0 matrixStats_0.55.0
## [19] sandwich_2.5-1 jpeg_0.1-8.1 colorspace_1.4-1
## [22] rvest_0.3.5 haven_2.2.0 xfun_0.12
## [25] crayon_1.3.4 jsonlite_1.6 hexbin_1.28.1
## [28] graph_1.64.0 zeallot_0.1.0 zoo_1.8-7
## [31] iterators_1.0.12 ape_5.3 glue_1.3.1
## [34] gtable_0.3.0 ipred_0.9-9 zlibbioc_1.32.0
## [37] XVector_0.26.0 phyloseq_1.30.0 IDPmisc_1.1.20
## [40] Rgraphviz_2.30.0 Rhdf5lib_1.8.0 BiocGenerics_0.32.0
## [43] DBI_1.1.0 Rcpp_1.0.3 bit_1.1-15.2
## [46] stats4_3.6.2 lava_1.6.7 prodlim_2019.11.13
## [49] httr_1.4.1 RColorBrewer_1.1-2 farver_2.0.1
## [52] pkgconfig_2.0.3 nnet_7.3-13 dbplyr_1.4.2
## [55] caret_6.0-86 labeling_0.3 tidyselect_0.2.5
## [58] rlang_0.4.2 reshape2_1.4.3 munsell_0.5.0
## [61] cellranger_1.1.0 tools_3.6.2 cli_1.1.0
## [64] generics_0.0.2 ade4_1.7-15 broom_0.5.5
## [67] evaluate_0.14 biomformat_1.14.0 yaml_2.2.0
## [70] fs_1.3.1 ModelMetrics_1.2.2.2 knitr_1.28
## [73] nlme_3.1-145 xml2_1.2.2 rstudioapi_0.10
## [76] compiler_3.6.2 png_0.1-7 reprex_0.3.0
## [79] stringi_1.4.3 Matrix_1.2-18 vegan_2.5-6
## [82] permute_0.9-5 multtest_2.42.0 vctrs_0.2.0
## [85] pillar_1.4.2 lifecycle_0.1.0 data.table_1.12.8
## [88] R6_2.4.1 latticeExtra_0.6-29 KernSmooth_2.23-16
## [91] gridExtra_2.3 IRanges_2.20.2 codetools_0.2-16
## [94] boot_1.3-24 assertthat_0.2.1 rhdf5_2.30.1
## [97] withr_2.1.2 S4Vectors_0.24.3 mgcv_1.8-31
## [100] parallel_3.6.2 hms_0.5.2 grid_3.6.2
## [103] rpart_4.1-15 timeDate_3043.102 class_7.3-16
## [106] rmarkdown_2.1 pROC_1.16.2 Biobase_2.46.0
## [109] lubridate_1.7.8
print(version)
## _
## platform x86_64-pc-linux-gnu
## arch x86_64
## os linux-gnu
## system x86_64, linux-gnu
## status
## major 3
## minor 6.2
## year 2019
## month 12
## day 12
## svn rev 77560
## language R
## version.string R version 3.6.2 (2019-12-12)
## nickname Dark and Stormy Night